# -*- encoding: utf-8 -*-
"""

PyCharm numpy使用教程
2024年10月22日21时02分
by wenyang

文件主要内容:


"""
import numpy as np



def main():
    # 创建array
    a = np.array([1, 2, 3])
    b = np.arange(-10, 10, 1)
    c = np.linspace(-10, 10, 21)
    print(a, b, c)
    # 基础的举证
    d = np.zeros((10, 10))
    print(d)
    e = np.ones(10)
    print(e)
    # 随机数
    f = np.random.rand(10)
    print(f)
    g = np.random.randn(10)
    print(g)
    # 基础的运算
    # numpy运算具有广播的特性
    a = np.array([1, 2, 3])
    b = np.array([4, 5, 6])
    print(a + b)
    print(a - b)
    print(a * b)
    # 矩阵的乘法
    a = np.array([[1, 2], [3, 4]])
    b = np.array([[5, 6], [7, 8]])
    # 矩阵的乘法
    print(np.dot(a, b))
    # 元素的指数
    a = np.array([1, 2, 3])
    print(np.exp(a))
    # 元素的对数
    print(np.log(a))
    # 元素的平方根
    print(np.sqrt(a))
    # 元素的绝对值
    print(np.abs(a))
    # 元素的sin值
    print(np.sin(a))
    # 元素的cos值
    print(np.cos(a))
    # 元素的tan值
    print(np.tan(a))
    # 矩阵转置和逆矩阵
    a = np.array([[1, 2], [3, 4]])
    print(a.T)
    print(np.linalg.inv(a))
    # 数组的索引和切片
    a = np.array([1, 2, 3, 4, 5])
    print(a[1:4])
    print(a[:3])
    print(a[-3:])
    print(a[::-1])
    print(a[::2])
    # 数组的形状
    a = np.array([[1, 2, 3], [4, 5, 6]])
    print(a.shape)
    a.shape = (3, 2)
    print(a)
    # 数组的拼接
    a = np.array([[1, 2], [3, 4]])
    b = np.array([[5, 6], [7, 8]])
    print(np.concatenate((a, b), axis=0)) # 垂直方向
    print(np.concatenate((a, b), axis=1)) # 水平方向
    # 数组的分割
    a = np.array
    print(np.split(a, 2, axis=0))
    print(np.split(a, 2, axis=1))
    # 数组的复制
    a = np.array([1, 2, 3])
    b = a.copy()
    print(b)
    # 数组的排序
    a = np.array([3, 2, 1])
    print(np.sort(a))
    # 数组的最大值和最小值
    print(np.max(a))
    print(np.min(a))
    # 数组的平均值
    print(np.mean(a))
    # 数组的方差
    print(np.var(a))
    # 数组的标准差
    print(np.std(a))
    # 数组的和
    print(np.sum(a))
    # 数组的积
    print(np.prod(a))




if __name__ == "__main__":
    main()
